package niuke;

/**
 * description:
 * author:张腾
 * date:2021-06-22
 */

import java.util.HashMap;

/**
 * 给定一个数组arr，返回arr的最长无重复元素子数组的长度，无重复指的是所有数字都不相同。
 * 子数组是连续的，比如[1,3,5,7,9]的子数组有[1,3]，[3,5,7]等等，但是[1,3,7]不是子数组
 */
public class NC41 {
    public int maxLength (int[] arr) {
        int left = 0;
        int ans = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int right=0;right<arr.length;right++){
            if (map.containsKey(arr[right])){
                left = Math.max(left,map.get(arr[right])+1);
            }
            map.put(arr[right],right);
            ans = Math.max(ans,right-left+1);
        }

        return ans;
    }
}
